
import { IBaseDataType } from '../Type/CommonType';
import BuffManager from '../Manager/BuffManager';
import SkillBase from '../Skill/SkillBase';
/*
 * @features: 游戏技能的buff
 * @description: 针对游戏技能的Buff基类
 * @Date: 2020-08-12 23:28:43
 * @Author: judu233(769471424@qq.com)
 * @LastEditTime: 2021-09-12 15:41:22
 * @LastEditors: judu233
 */
/**buff类型 */
export enum EBuffType {
    None = `None`,

}
/**buff叠加类型 */
export interface IBuffTimeType {
    /**类型 */
    type: EBuffType;
    value: number;
}
/**buff数据接口 */
export interface IBuffDataType extends IBaseDataType {
    /**buff 的类名 */
    type: string;
    /**Buff等级 */
    level: number;
    /**buff生效时间类型 */
    buffTime: IBuffTimeType;
    /**是否在生效中 */
    isTakeEffect: boolean;
    /**是否可以叠加 */
    isCanOverlay: boolean;
    /**最大叠加几层 */
    maxFloor: number;
    /**当前叠加层数*/
    nowFloor: number;
}

/**  
    * @Title : 技能buff的基类
    * @Description : 所有技能buff都将继承该类 ，并且该类及子类不可挂载到场景中
 **/
export default class BuffBase {
    /**技能数据 */
    public data: IBuffDataType;

    /**buff所在的技能 */
    public skill: SkillBase;

    /**buffManager */
    public buffManager: BuffManager;

    /**使用buff ` 子类负责实现具体逻辑*/
    public useBuff() { }

    /**移除Buff 子类负责实现具体逻辑*/
    public removeBuff() { }

    /**叠加buff 子类负责实现具体逻辑*/
    public overlayBuff() { }
}
